package newBee.class3;

import common.ArrayUtils;

import java.util.Arrays;

/**
 * 等差数列差分
 * l, r, s, e, d
 * 2 ~6, 4~16  3
 * l:起始位置  r:终止位置
 * s:起始value   e: 终止value
 * d:等差值
 * <p>
 * arr[L]+= s
 * arr[L+1] += d - s
 * arr[r+1] -= d - e
 * arr[r+2] += e
 * 结果：
 * arr = [0,0,0,0, 0, 0, 0,0,0,0]
 * arr = [0,0,4,7,10,13,16,0,0,0]
 *
 *
 * 解析过程
 */
public class Code03_numberOfArithmeticSlices {
    public static void main(String[] args) {
        int[] arr = {};
    }

    /**
     * 解析过程
     * 初始： [0, 0, 0,   0,   0,   0,    0,  0, 0, 0]
     *
     * 步骤1：[0, 0,+s, d-s,   0,   0,   0, -d-e, e, 0]
     *
     * 步骤2：[0, 0, s,   d,   d,   d,   d,  -e, 0, 0]
     *
     * 最终： [0, 0,+s, s+d, s+2d, s+3d,s+4d, 0, 0, 0]
     *             s                     e
     * 最终值:[0, 0, 4,  7,   10,   13,   16, 0, 0, 0]
     */
    private static int[] numberOfArithmeticSlices(int[][] bookings, int n) {
        int[] ans = new int[n + 1];
        for (int[] b : bookings) {
            ans[b[0] - 1] += b[2];
            ans[b[1]] -= b[2];
        }
        for (int i = 1; i < n; i++) {
            ans[i] += ans[i - 1];
        }
        return Arrays.copyOf(ans, n);
    }
}
